package com.briup.pts.config.auth;

import com.briup.pts.domain.bean.Account;

/**
 * 使用ThreadLocal存储当前登录用户的数据
 */
public class UserDetails {

    //创建ThreadLocal对象，指定存储用户数据
    private static final ThreadLocal<Account> THREAD_LOCAL
            = new ThreadLocal<>();

    public static void setCurrentUser(Account account) {
        //ThreadLocal底层的map集合，key为当前被使用的线程对象
        THREAD_LOCAL.set(account);
    }

    //根据当前执行任务的线程，获取到其对应的用户对象
    public static Account currentUser() {
        return THREAD_LOCAL.get();
    }

    //从当前用户中获取用户名
    public static String username() {
        return currentUser().getUsername();
    }
    //清空ThreadLocal内部中属于当前线程的数据
    public static void clear(){
        THREAD_LOCAL.remove();
    }
}
